您好,欢迎来到达州工业云! 平台首页 企业驾驶舱 帮助中心 企业登录 企业注册

HI,欢迎使用达州工业云平台!

账号必须大于2位

创新资源平台
服务平台首页>专利库>专利详情

分布式多重处理安全网关的系统和方法

  • 申请号:CN200880118178.9 申请公布号: CN101878663B
  • 申请日: 2008-10-29 申请公布日: 2014-06-11
  • 申请(专利权)人: 专利代理机构: 北京康信知识产权代理有限责任公司
  • 分类号:H04L9/00;H04L9/32;H04W12/02

专利介绍

一种用于分布式多重处理安全网关的系统和方法,包括:建立主机侧会话;为服务器选择代理网络地址;使用该代理网络地址建立服务器侧会话;接收数据包;从安全网关的多核处理器中的多个中央处理器内核分配一个用于处理数据包的中央处理器内核;根据安全策略处理数据包;并发送经处理的数据包。选择代理网络地址以使相同的中央处理器内核被分配用来处理来自服务器侧会话和主机侧会话的数据包。通过以这种方式分配中央处理器内核,可以提供一种具有更高能力的安全网关。
1.一种用于提供安全网关的方法,包括:(a)建立主机侧会话;(b)为服务器选择代理网络地址;(c)使用所述代理网络地址建立服务器侧会话;(d)从所述主机侧会话接收第一数据包,从所述服务器侧会话接收第二数据包;(e)从所述安全网关的多核处理器中的多个中央处理器内核中,分配相同的一个中央处理器内核来处理来自所述服务器侧会话的第二数据包和所述主机侧会话的第一数据包;(f)根据安全策略处理所述第一数据包和所述第二数据包;(g)发送经处理的所述第一数据包和所述第二数据包,以及其中,所述分配(e)包括:基于所述第一数据包中的主机网络地址和服务器网络地址来计算第一中央处理器内核的身份;并基于所述第二数据包中的服务器网络地址和代理网络地址计算第二中央处理器内核的身份,选择所述代理网络地址以使所计算的第一中央处理器内核的身份和第二中央处理器内核的身份相同。
2.根据权利要求1所述的方法,其中,选择所述代理网络地址,以使所述一个中央处理器内核被分配用来处理来自所述服务器侧会话和所述主机侧会话的多个数据包。
3.根据权利要求1所述的方法,其中,所述第一数据包是从所述主机侧会话接收的,其中,所述分配(e)包括:(e1)根据所述第一数据包中的服务器网络地址和主机网络地址计算所述一个中央处理器内核的身份;以及(e2)将所述第一数据包的处理分配给所述一个中央处理器内核。
4.根据权利要求3所述的方法,其中,所述发送(g)包括:(g1)接收经处理的所述第一数据包;(g2)用所述代理网络地址代替经处理的所述第一数据包中的所述主机网络地址;以及(g3)向所述服务器侧会话发送经处理的所述第一数据包。
5.根据权利要求1所述的方法,其中,所述发送(g)包括:(g1)接收经处理的所述第二数据包;(g2)用所述主机网络地址代替经处理的所述第二数据包中的所述代理网络地址;以及(g3)向所述主机侧会话发送经处理的所述第二数据包。
6.根据权利要求1所述的方法,其中,所述分配(e)基于所述多个中央处理器内核的负载。
7.根据权利要求6所述的方法,其中,所分配的一个中央处理器内核在所述多个中央处理器内核中具有最轻的负载。
8.根据权利要求1所述的方法,其中,所述分配(e)基于所述多个中央处理器内核的功能性作用。
9.一种安全网关,包括:多个中央处理器内核,位于多核处理器中;网络地址选择器,用于接收主机和服务器之间的会话的会话请求,用于基于网络信息为所述服务器选择代理网络地址,以及用于建立服务器侧会话和主机侧会话;以及调度器,用于从所述多个中央处理器内核中分配一个中央处理器内核,以处理来自所述服务器侧会话和所述主机侧会话的多个数据包,以及其中,所述调度器:接收来自所述服务器侧会话的数据包;根据所述数据包中的服务器网络地址和代理网络地址,计算所述一个中央处理器内核的身份;以及将所述数据包的处理分配给所述一个中央处理器内核,其中,根据安全策略处理所述数据包,其中通过所述网络地址选择器来选择所述代理网络地址,以使相同的一个中央处理器内核被分配用来处理来自所述服务器侧会话和所述主机侧会话的所述多个数据包。
10.根据权利要求9所述的安全网关,其中,所述网络信息包括安全网关网络地址和主机网络地址。
11.根据权利要求9所述的安全网关,其中,所述调度器:接收来自所述主机侧会话的数据包;根据所述数据包中的服务器网络地址和主机网络地址,计算所述一个中央处理器内核的身份;以及将所述数据包的处理分配给所述一个中央处理器内核,其中,根据安全策略处理所述数据包。
12.根据权利要求11所述的安全网关,其中,所述调度器进一步:接收经处理的数据包;用所述代理网络地址代替经处理的数据包中的所述主机网络地址;以及向所述服务器侧会话发送经处理的数据包。
13.根据权利要求9所述的安全网关,其中,所述调度器进一步:接收经处理的数据包;用所述主机网络地址代替经处理的数据包中的所述代理网络地址;以及向所述主机侧会话发送经处理的数据包。
14.根据权利要求9所述的安全网关,进一步包括数据存储器,用于存储现有会话的代理网络地址,其中,所述网络地址选择器通过将所述代理网络地址与所述数据存储器中的地址进行比较来确定在现有会话中没有使用所述代理网络地址,其中,所述网络地址选择器基于主机网络地址选择所述代理网络地址。
15.根据权利要求9所述的安全网关,其中,代理网络地址的所述选择基于所述多个中央处理器内核的负载。
16.根据权利要求15所述的安全网关,其中,所分配的一个中央处理器内核在所述多个中央处理器内核中具有最轻的负载。
17.根据权利要求9所述的安全网关,其中,代理网络地址的所述选择基于所述多个中央处理器内核的功能性作用。相关申请的交叉参考本申请为于2006年8月8日提交的序列号11/501,607的题为“分布式多重处理安全网关的系统和方法”的共同未决的部分继续美国专利申请。技术领域
本发明总体上涉及数据联网,更具体地,涉及分布式多重处理安全网关的系统和方法。
背景技术
随着越来越多的计算机通过数据网络进行连接,以及越来越多的应用程序利用数据网络来实现它们的功能,数据网络活动正在增加。因此,防止数据网络的安全漏洞变得更加重要。当前存在诸如防火墙、VPN防火墙、父级控制装置(parentalcontrolxa0appliance)、邮件病毒检测网关、用于网络仿冒(phishing)和间谍软件(spyware)的专用网关、入侵检测和预防装置、访问控制网关、身份管理网关的多种安全网关,以及多种其他类型的安全网关。通常基于诸如MIPS架构、PowerPC架构、或者ARM架构的RISC架构使用诸如Intelxa0Pentium、AMD处理器、或者SPARC处理器的通用微处理器,或者嵌入式微处理器来实现这些产品。微处理器架构受限于其处理性能。通常其能够处理高达每秒千兆比特的带宽。在过去的几年里,数据网络带宽应用增长的步伐快于微处理器性能的改善。今天,在很多大中型安全公司数据网络中,每秒若干千兆比特的数据网络带宽应用的并非不常见。我们期望这种情况在包括小企业数据网络、住宅网络以及服务提供商数据网络的大多数数据网络中变得更加普遍。数据网络的使用增长的趋势说明了对用于以串行方式运行来保护数据网络的更好且更高能力的安全网关的需要,尤其是在使用均为微处理器或者均基于微处理架构的多重处理单元的情况下。
发明内容
用于分布式多重处理安全网关的系统和方法包括:建立主机侧会话;为服务器选择代理网络地址;使用该代理网络地址建立服务器侧会话;接收数据包;从安全网关的多核处理器中的多个中央处理器内核分配一个用于处理数据包的中央处理器内核;根据安全策略处理数据包;并发送处理的数据包。选择代理网络地址以使相同的中央处理器内核被分配用来处理来自服务器侧会话和主机侧会话的数据包。通过以这种方式分配中央处理器内核,可以提供一种具有更高能力的安全网关。
附图说明
图1a示出了安全数据网络。图1b示出了网络地址转换(NAT)处理的概要。图1c示出了用于TCP会话的NAT处理。图2示出了分布式多重处理安全网关。图3示出了调度处理。图4示出了代理网络地址选择处理。图5示出了本发明实施例的多重处理器内核。
具体实施方式
图1a示出了安全数据网络。安全网关170保护安全数据网络199。在一个实施例中,安全数据网络199为住宅数据网络。在一个实施例中,安全数据网络199为公司网络。在一个实施例中,安全数据网络199为区域公司网络。在一个实施例中,安全数据网络199为服务提供商网络。在一个实施例中,安全网关170为住宅宽带网关。在一个实施例中,安全网关170为公司防火墙。在一个实施例,安全网关170为区域办公防火墙或者部门防火墙。在一个实施例中,安全网关170为公司虚拟专用网络(VPN)防火墙。在一个实施例中,安全网关170为服务提供商网络的因特网网关。当安全数据网络199内部的主机130访问安全数据网络199外部的服务器110时,主机130通过安全网关170与服务器110建立会话。在主机130和服务器110之间的会话中交换的数据包通过安全网关170。安全网关170在处理会话中的数据包期间应用多个安全策略。安全策略的实例包括:网络地址保护、内容过滤、病毒检测以及侵扰预防、间谍软件或者网络仿冒阻止、网络入侵或者拒绝服务预防、数据通信监控、或者数据通信监听。图1b示出了网络地址转换(NAT)处理的概要。在一个实施例中,安全策略用于保护主机130的网络地址。主机130在主机130和服务器110之间的会话160中使用主机网络地址183。在一个实施例中,主机网络地址183包括主机130的IP地址。在另一个实施例中,主机网络地址183包括主机130的会话端口地址。安全网关170通过不泄露主机网络地址183来保护主机130。当主机130向安全网关170发送会话160的会话请求时,该会话请求包括主机网络地址183。安全网关170与主机130建立主机侧会话169。主机130在会话169中使用主机网络地址183。安全网关170选择代理网络地址187。安全网关170使用代理网络地址187以与服务器110建立服务器侧会话165。服务器侧会话165为安全网关170和服务器110之间的会话。主机侧会话169为安全网关170和主机130之间的会话。会话160包括服务器侧会话165和主机侧会话169。安全网关170对会话160执行网络地址转换(NAT)处理。安全网关170通过用主机网络地址183代替代理网络地址187来对在服务器侧会话165上接收的数据包进行网络地址转换处理。安全网关170将转换的数据包传输到主机侧会话169上。类似地,安全网关170通过用代理网络地址187代替主机网络地址183来对在主机侧会话169上接收的数据包进行网络地址转换处理。安全网关170将转换的数据包传输到服务器侧会话165上。在一个实施例中,会话160为传输控制协议(TCP)会话。在一个实施例中,会话160为用户数据报协议(UDP)会话。在一个实施例中,会话160为互联网控制报文协议(ICMP)会话。在一个实施例中,会话160基于在IP协议顶部的传输会话协议。在一个实施例中,会话160基于在IP协议顶部的应用会话协议。图1c示出了TCP会话的NAT处理。主机130发送会话请求192用于与服务器110建立会话160。会话160为TCP会话。会话请求192包括主机网络地址183和服务器网络地址184。安全网关170接收会话请求192。安全网关170从会话请求192提取主机网络地址183。安全网关170确定代理网络地址187。在一个实施例中,主机网络地址183包括主机的IP地址,安全网关170确定代理IP地址以代替主机的IP地址。在一个实施例中,主机网络地址183包括主机的TCP端口号码,安全网关170确定代理TCP端口号码以代替主机TCP端口号码。安全网关170从会话请求192提取服务器网络地址184。安全网关170基于服务器网络地址184和代理网络地址187与服务器110建立服务器侧会话165。服务器侧会话165为TCP会话。安全网关170还通过响应于会话请求192与主机130建立主机侧会话169。在建立服务器侧会话165和主机侧会话169以后,安全网关170处理来自服务器侧会话165和主机侧会话169的数据包。在一个实施例中,安全网关170从服务器侧会话165接收数据包185。数据包185包括:服务器网络地址184和代理网络地址187。安全网关170提取服务器网络地址184和代理网络地址187。安全网关170基于提取的网络地址确定主机侧会话169。安全网关170进一步根据主机侧会话169确定主机网络地址183。安全网关170通过首先用主机网络地址183代替代理网络地址187来修改数据包185。安全网关170修改诸如TCP校验和、IP报头校验和的数据包185的其他部分。在一个实施例中,安全网关170通过用主机网络地址183代替代理网络地址187的任何用法来修改数据包185的有效负载。在安全网关170完成修改数据包185以后,安全网关170将修改的数据包185传输到主机侧会话169上。在类似的方法中,安全网关170从主机侧会话169接收数据包188。数据包188包括:服务器网络地址184和主机网络地址183。安全网关170提取服务器网络地址184和主机网络地址183。安全网关170基于提取的网络地址确定服务器侧会话165。安全网关170进一步根据服务器侧会话165确定代理网络地址187。安全网关170通过首先用代理网络地址187代替主机网络地址183来修改数据包188。安全网关170修改诸如TCP校验和、IP报头校验和的数据包188的其他部分。在一个实施例中,安全网关170通过用代理网络地址187代替主机网络地址183的任何用法来修改数据包188的有效负载。在安全网关170完成修改数据包188以后,安全网关170将修改的数据包188传输到服务器侧会话165上。图2示出了分布式多重处理安全网关。在一个实施例中,安全网关270为分布式多重处理系统。安全网关270包括多个处理单元。处理单元272包括存储模块。如图1所述,存储模块存储主机网络地址、代理网络地址以及用于处理单元272以应用安全策略的其他信息。处理单元272具有处理单元身份273。在图5所示的一个实施例中,处理单元272为在结合两个或者多个独立内核的多核处理器579中的中央处理器(CPU)内核572。在一个实施例中,多核处理器579为诸如Intel的Corexa02xa0Duo处理器、或者AMD的Athlon双核处理器的双核处理器。在一个实施例中,多核处理器579为诸如Intel的4核Xeonxa05300系列处理器、或者AMD的Opteronxa0Quad-Core处理器的4核处理器。在一个实施例中,安全网关270包括多个多核处理器,其中,处理单元272为多核处理器。在一个实施例中,处理单元272为在诸如Intel的IXP2855或IXP2805网络处理器、AMD的Aul500处理器、或者Gavium的Octeonxa0MIPS64网络处理器的网络处理器内的包处理模块。安全网关270包括调度器275。调度器275接收数据包并确定用于处理该数据包的处理单元。调度器275通常基于该数据包计算处理单元身份。基于计算的处理单元身份,安全网关270将数据包分配给识别出的处理单元进行处理。在一个实施例中,调度器275从主机侧会话269接收数据包288并基于数据包288中的主机网络地址和服务器网络地址来计算第一处理单元身份。在另一实施例中,调度器275从服务器侧会话265接收数据包285并基于数据包285中的代理网络地址和服务器网络地址来计算第二处理单元身份。安全网关270包括网络地址选择器277。网络地址选择器277基于网络信息选择代理网络地址。网络信息包括在会话260中的会话请求中所获得的主机网络地址和安全网关网络地址。还可以使用其他类型的网络信息。将代理网络地址用于建立服务器侧会话265。选择代理网络地址以使调度器275所计算的第一处理单元身份和第二处理单元身份相同。换句话说,分配相同的处理单元以处理来自服务器侧会话265的数据包285和来自主机侧会话269的数据包288。在一个实施例中,选择代理网络地址,以使调度器275所计算的第一处理单元身份识别在多个处理单元中具有最轻负载的处理单元。在一个实施例中,负载基于处理单元的处理器闲置时间。在一个实施例中,负载基于处理单元的有效会话。在一个实施例中,网络地址选择器277通过应用程序接口(API)从处理单元获得负载。在一个实施例中,网络地址选择器277从处理单元的存储模块获得负载。在一个实施例中,选择代理网络地址以使调度器275所计算的第二处理单元身份识别在多个处理单元中具有最轻负载的处理单元。在一个实施例中,选择代理网络地址,以使调度器275所计算的第一处理单元身份识别具有功能性作用(functionalxa0role)的处理单元。在一个实施例中,功能性作用包括安全策略的处理。在一个实施例中,网络地址选择器277通过注册处理、或者应用程序接口(API)来获得处理单元的功能性作用。在一个实施例中,网络地址选择器277从处理单元的存储模块获得功能性作用。图3示出了调度处理。调度器375基于从会话360的数据包385所获得的两个网络地址来计算处理单元身份。会话360包括主机侧会话369和服务器侧会话365。主机侧会话369的两个网络地址为服务器网络地址和主机网络地址。服务器侧会话365的两个网络地址为代理网络地址和服务器网络地址。调度器375计算主机侧会话369和服务器侧会话365的相同的处理单元身份。在一个实施例中,调度器375基于散列函数(hashingxa0function)进行计算。在一个实施例中,调度器375通过添加两个网络地址来计算和。在一实例中,调度器375通过对以二进制数表示的两个网络地址进行诸如异或(XOR)二进制运算、或者与(and)二进制运算的二进制运算来计算和。在一实例中,调度器375通过首先提取诸如网络地址的前4位的两个网络地址的部分来计算和,并对提取的部分应用诸如二进制运算的运算。在一实例中,调度器375通过首先将两个网络地址乘以一个数并对该倍数应用诸如加的运算来计算和。在一个实施例中,调度器375通过对该和进行处理来计算处理单元身份。在一个实施例中,在安全网关370中有4个处理单元。在一实例中,调度器375提取和的前两位,并将提取的这两位当作在0和3之间的数字量。在一实例中,调度器375提取和的第一位和最后一位,并将提取的这两位当作在0和3之间的数字量。在一实例中,调度器375将和除以4并确定除法的余数。该余数为在0和3之间的数。在一个实施例中,安全网关370包括8个处理单元。调度器375提取和的3位并将提取的这三位作为在0和7之间的数字量。在一实例中,调度器375将和除以8并确定除法的余数。该余数为在0和7之间的数。在一个实施例中,网络地址包括IP地址和会话端口地址。调度器375计算两个网络地址的IP地址和会话端口地址的和。尽管上述教导是基于散列函数的以上描述进行的,但是对于本领域的技术人员显而易见的是,调度器375可以实现不同的散列函数。图4示出了代理网络地址选择处理。网络地址选择器477选择主机网络地址483的代理网络地址487。在一个实施例中,主机网络地址483包括主机IP地址484和主机会话端口地址485;代理网络地址487包括代理IP地址488和代理会话端口地址489。选择代理网络地址487以使调度器475计算关于主机侧会话469和服务器侧会话465的相同的处理单元身份。在一个实施例中,选择处理是基于在图3中所示的调度处理进行的。在一实例中,调度器475使用计算两个IP地址和两个会话端口地址的和的方法,然后将和除以4。在一个实施例中,首先,网络地址选择器477选择代理IP地址488。然后,网络地址选择器477选择代理会话端口地址489以使当使用关于服务器网络地址490和主机网络地址483的方法时,调度器475计算的处理单元身份与当使用关于服务器网络地址490和代理网络地址487的方法时相同。在一实例中,调度器475计算来自两个网络地址的二进制算子XOR的和,并提取该和的最后3位数字。网络地址选择器477选择具有主机会话端口地址485的相同最后3位数字的代理会话端口地址489。在一个实施例中,安全网关470执行多个现有会话的网络地址转换处理。网络地址选择器477检查所选择的代理网络地址487是否在多个现有会话中没有使用。在一个实施例中,安全网关470包括数据存储器479。数据存储器479存储在多个现有会话中使用的多个代理网络地址。网络地址选择器477通过将选择的代理网络地址487与存储的多个代理网络地址进行比较并且没有找到匹配从而确定没有使用选择的代理网络地址487。在一个实施例中,处理单元包括网络地址选择器。处理单元接收由安全网关基于调度器计算的处理单元身份而分配的数据包。在一个实施例中,处理单元确定该数据包包括会话请求。如图4所示,在处理单元中的网络地址选择器基于在会话请求中的主机网络地址来选择代理网络地址。在一个实施例中,特定的第一处理单元包括网络地址选择器。没有网络地址选择器的第二处理单元接收数据包并确定该数据包包括会话请求。第二处理单元使用例如远程功能呼叫向第一处理单元发送数据包。第一处理单元接收数据包。网络地址选择器基于会话请求中的主机网络地址来选择代理网络地址。在一个实施例中,在处理单元的存储模块中实现数据存储器。在一个实施例中,将数据存储器中的多个代理网络地址存储在每个处理单元的每个存储模块中。在一个实施例中,以分布的方式将数据存储器中的多个代理网络地址存储在存储模块中,而将在由处理单元所处理的会话中使用的代理网络地址存储在处理单元的存储模块中。在一个实施例中,安全网关包括由多个处理单元所共享的存储器。安全网关将共享存储器分区为多个存储区域。处理单元有权访问专用存储区域,而无权访问其他存储区域。在一个实施例中,安全网关包括中央处理器。在一个实施例中,中央处理器包括在诸如专用集成电路(ASIC)或者现场可编程门阵列(FPGA)的电路中实现的诸如超线程、微引擎或其他处理线程的多个处理线程。处理单元为处理线程。在一个实施例中,中央处理器包括多个微处理器内核。处理线程为微处理器内核。在一个实施例中,安全策略用于病毒检测或阻止。在一个实施例中,安全策略用于网络仿冒检测或阻止。在一个实施例中,安全策略用于传输限额执行(trafficxa0quotaxa0enforcement)。在一个实施例中,安全策略用于合法数据监听。在一个实施例中,NAT处理用于UDP会话。在一个实施例中,安全网关接收UDP包。在一个实施例中,安全网关确定UDP包不是来自现有会话。安全网关作为会话请求处理UDP包。在一个实施例中,NAT处理用于ICMP会话。在类似的方法中,安全网关作为会话请求处理来自非现有会话的ICMP包。虽然根据所示的实施例已经描述了本发明,但是在本领域的普通技术人员应理解,可能存在对实施例的改变并且这些改变在本发明的精神和范围内。因此,在不背离所附权利要求的精神和范围内,可以通过本领域的普通技术人员进行多种修改。